/* File Created: 五月 27, 2013 */
// var treeFilter = new Ext.tree.TreeFilter(tree, {
//   clearBlank: true,
//   autoClear: true
// });

var timeOutId = null;
var hiddenPkgs = [];

var findByKeyWordFiler = function (node, event) {
  clearTimeout(timeOutId); // 清除timeOutId  
  // tree.expandAll(); // 展开树节点  
  // 为了避免重复的访问后台，给服务器造成的压力，采用timeOutId进行控制，如果采用treeFilter也可以造成重复的keyup  
  timeOutId = setTimeout(function () {
    // 获取输入框的值  
    var text = node.getValue();
    // 根据输入制作一个正则表达式，'i'代表不区分大小写  
    var re = new RegExp(Ext.escapeRe(text), 'i');
    // 先要显示上次隐藏掉的节点  
    Ext.each(hiddenPkgs, function (n) {
      n.ui.show();
    });
    hiddenPkgs = [];
    if (text != "") {
      treeFilter.filterBy(function (n) {
        // 只过滤叶子节点，这样省去枝干被过滤的时候，底下的叶子都无法显示  
        return !n.isLeaf() || re.test(n.text);
      });
      // 如果这个节点不是叶子，而且下面没有子节点，就应该隐藏掉  
      tree.root.cascade(function (n) {
        if (n.id != '0') {
          if (!n.isLeaf() && judge(n, re) == false && !re.test(n.text)) {
            hiddenPkgs.push(n);
            n.ui.hide();
          }
        }
      });
    } else {
      treeFilter.clear();
      return;
    }
  }, 500);
}


// 过滤不匹配的非叶子节点或者是叶子节点  
var judge = function (n, re) {
  var str = false;
  n.cascade(function (n1) {
    if (n1.isLeaf()) {
      if (re.test(n1.text)) {
        str = true;
        return;
      }
    } else {
      if (re.test(n1.text)) {
        str = true;
        return;
      }
    }
  });
  return str;
}

Ext.onReady(function () {
  var store = Ext.create('Ext.data.TreeStore', {
    root: {
      expanded: true,
      children: [{
          "id": 1,
          "text": "反腐部",
          "children": [{
            "id": 11,
            "text": "百亿巨头部",
            "leaf": true
          }, {
            "id": 12,
            "text": "千万乡政部",
            "leaf": true
          }],
          "expanded": true
        },
        {
          "id": 2,
          "text": "模拟部",
          "leaf": true
        },
        {
          "id": 3,
          "text": "城管威武部",
          "leaf": true
        }
      ]
    }
  });

  Ext.create('Ext.tree.Panel', {
    // title: 'Simple Tree',
    animate: true,
    width: 200,
    height: 150,
    store: store,
    collapsible: true,
    enabledDD: true,
    rootVisible: false,
    renderTo: Ext.getBody(),
    tbar: [' ',
      new Ext.form.TextField({
        width: 350,
        emptyText: '请输入关键字检索',
        enableKeyEvents: true,
        listeners: {
          keyup: function (node, event) {
            findByKeyWordFiler(node, event);
          },
          scope: this
        }
      })
    ],
    
  });
})